


console.log('xxx')
// function rand() {
//     return Math.floor(Math.random() * 256)
// }



// let arr = [1, 2, 3, 4]
// let arr1 = arr
// let arr2 = [...arr] // 扩展操作符复制每个元素到一个完全新的数组中
//
// arr[0] = -2
// arr[0]++
// // arr[0] += 1
// console.log(arr1 === arr) // => true, arr1 和 arr 是引用关系
// console.log(arr2 === arr) // => false, arr2 和 arr 不是引用关系
// console.log(arr1)  // => [0, 2, 3, 4]
// console.log(arr2) // => [1, 2, 3, 4]
//


// 方法1：基于 for 初始化二维数组
// let mat = new Array(3)
// for (let x = 0; x < mat.length; x++) {
//     mat[x] = new Array(4)
//     for (let y = 0; y < mat[x].length; y++)
//         mat[x][y] = [rand(), rand()]
// }
//
// // 方法2：基于 for/in 初始化二维数组
// let arr = new Array(3).fill(null)
// for (let x in arr) {
//     arr[x] = new Array(4).fill(null)
//     for (let y in arr[x])
//         arr[x][y] = [rand(), rand()]
// }
//
//
// // 方法3：基于 forEach 初始化二维数组
// let a = new Array(3).fill(null)
// a.forEach((_, x) => {
//     a[x] = new Array(4).fill(null)
//     a[x].forEach((_, y) => {
//         a[x][y] = [rand(), rand()]
//     })
// })
//
// // 方法4：基于 map 初始化二维数组
// let b = new Array(3).fill(null)
// let c = b.map(_ => {
//     let b = new Array(4).fill(null)
//     return b.map(_ => [rand(), rand()])
// })

console.log('hi')

// let c = a.map(r => new Array(4).fill([rand(), rand()]))
// let c = a.map(_ => {
//     let b = new Array(4)
//     b.map()
// })
// let b = a.map(r => r + 1)


// class A {
//     y
//
//     constructor() {
//         x = 'hi'
//     }
// }

// let a = [1, 2, 3, 4]
// let b = a.slice(-2, 2)  //.map(e => e > 2)

// let a = new A()
//
// // 访问 A 的字段（field） `x` 的两种方法
// console.log(a.x)  // => 'hi'
// console.log(a['x'])  // => 'hi'

// 判断对象`a`中是否含有字段`x`
// console.log('x' in A)  // => true
// console.log('y' in A)  // => true
console.log(a)